home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 15
/
Aminet 15 - Nov 1996.iso
/
Aminet
/
util
/
rexx
/
Rexxcontrol.lha
/
rexxcontrol
/
demo.rexx
next >
Wrap
OS/2 REXX Batch file
|
1996-07-05
|
15KB
|
384 lines
/* Test der rexxcontrol.library (Grundfunktionen)
* Letzte Änderung: $VER: Demo.rexx 1.24 (1.3.96) © Uwe Schröder
*/
signal on error
signal on syntax
options results
/* Library einbinden */
call addlib('rexxcontrol.library',0,-30,0)
version=rco_getvers() /* Arexx zwingen, die Library zu öffnen */
/* Schriftstile definieren */
cr='0A'x;csi='9B'x;norm=csi'0m'csi'31m';fett=csi'1m';kur=csi'3m';weiss=csi'32m';blau=csi'33m'
/* Ausgabefenster öffnen */
parse upper version ver
m=find(ver,"NTSC")
rows="160"
if m=0 then rows="216"
windowdef="RAW:70/25/535/"rows"/Test der rexxcontrol.library"
call open(out,windowdef)
if ~ result then exit 20
/* Dummy-Fenster öffnen, um Ausgabefenster zu inaktivieren */
dummydef="CON:10/10/15/15/x/BACKDROP"
call open(dummy,dummydef)
if ~ result then exit 20
/* Es geht los */
call writeln out,"Dieses ARexx-Skript demonstriert die Funktionen"
call writeln out,"der"fett" rexxcontrol.library."norm cr
call writeln out,"Die aktuelle Versionsnummer ist"blau version norm
call writeln out,"Man kann sie mit"weiss "rco_getvers()"norm" erhalten."cr
call writeln out,"ARexx erlaubt leider nur Eingaben im Consolefenster"
call writeln out,"mittels PULL. Dazu braucht man ein aktives und sichtbares"
call writeln out,"Fenster und Zeit zum Eintippen, denn eine Eingabe wird"
call writeln out,"erst nach Druck auf die Returntaste erkannt. Bei der "
call writeln out,"Steuerung von z.B. Videosoftware ein Unding, denn"
call writeln out,"oft ist nur das Videobild sichtbar und eine Echtzeit-"
call writeln out,"reaktion des Programms ist so auch nicht möglich."
call writeln out,"Eine Lösung bieten die rexxcontrol.library-Funktionen,"
call writeln out,"mit denen man unabhängig von Fenstern unmittelbar auf"
call writeln out,"Tasten, Mausklicks oder Joystickbetätigung reagieren kann." cr
call writeln out,weiss"rco_waitevent()"norm" wartet nun auf Tastendruck, Mausklick"
call writeln out,"oder Betätigung der Feuertaste. (Wenn Sie allerdings"
call writeln out,"eine Taste drücken, während ein CON:-Fenster aktiv"
call writeln out,"ist, stoppt die Ausgabe, da der Cursor dann vom"
call writeln out,"linken Rand wegbewegt wird. Dies kann man mit der"
call writeln out,"Backspace-Taste korrigieren.)" cr
call beep1
call inaktiv
call rco_waitevent() /* auf irgendeinen Klick warten */
if ende()=1 then signal abbruch
call writeln out,"Wenn bei Videosoftware kein Computerbild sichtbar"
call writeln out,"ist, ist es unmöglich, von ARexx irgendeine"
call writeln out,"Rückmeldung zu erhalten, denn SAY funktioniert eben"
call writeln out,"auch nur in sichtbaren Console-Fenstern."
call Writeln out,"Als Ausgabesignale stellt die rexxcontrol.library"
call writeln out,"einen variierbaren Signalton...."cr
call rco_wait(240)
call writeln out, "Hören Sie Ihn ?"cr
/* Beep in einer Schleife */
do i=1 to 12
call rco_beep(i*100,6)
end
call rco_wait(10)
do i=12 to 1 by -1
call rco_beep(i*100,6)
end
call writeln out,"....zur Verfügung, der mittels"weiss" rco_beep(n,m)"norm
call writeln out,"(n=Frequenz, m=Dauer) aufgerufen werden kann."
call writeln out,"Oder nur"weiss" rco_beep()"norm", was sich so anhört..."cr
call writeln out,"Klicken Sie die "fett"linke"norm" Maustaste!"cr
call rco_waitlmb() /* auf Mausklick links warten */
if ende() = 1 then signal abbruch
call rco_beep() /* ein einfacher Beep (langweilig) */
call inaktiv
call writeln out,"Mit "weiss"rco_waitlmb()"norm" wurde auf eine Betätigung der"
call writeln out,"linken Maustaste gewartet (LeftMouseButton)."
call writeln out,"Das geht auch mit der rechten Maustaste."
call writeln out,weiss"rco_waitrmb()"norm "wartet darauf (RightMouseButton)."
call writeln out,cr"Klicken Sie "fett"rechts"norm", dann geht's weiter!"cr
call beep1
call rco_waitrmb() /* auf Mausklick rechts warten */
if ende()=1 then signal abbruch
/* Phone-Demo */
sabbel=rco_phone("OH.") /* nur zum Test, ob Sprachausgabe funktioniert */
if sabbel=0 then do
call writeln out,weiss"rco_phone(phonemstring)"norm" ermöglicht eine Sprachausgabe über"
call writeln out,"das narrator.device, damit ist eine weitere Möglichkeit"
call writeln out,"eines akustischen Signals gegeben. Hören Sie mal..."
call rco_wait(210)
call rco_phone("/HAH6LLOW4-, IY6RX AH3MIY5GAH VUH6IH6NSHT IY6NEH2N AY3NEH2N GUW4UHTEH2N TAH5AHK.")
end
else do
call writeln out,"Leider kann die Sprachausgabe über "weiss"rco_phone(String)"norm
call writeln out,"nicht demonstriert werden, da Ihnen anscheinend"
call writeln out,"das narrator.device im DEVS:-Verzeichnis fehlt."
call writeln out,"Schade."
call beep1
call rco_wait(180)
end
call writeln out,cr"Wir können natürlich auch ein optisches Signal"
call writeln out,"ausgeben. Wenn es nicht bei Videoarbeiten stört,"
call writeln out,"z.B. mit der DisplayBeep-Routine des Amiga-OS,"
call writeln out,"die Sie sicher von Fehleranzeigen der Workbench kennen."
call writeln out,cr"Klicken Sie einmal die "fett"linke"norm" Maustaste, um ein paar mal"
call writeln out,"dieses Signal mit "weiss"rco_displaybeep()"norm" aufzurufen!"
call beep1
call rco_waitlmb()
if ende()=1 then signal abbruch
/* DisplayBeep */
do i=1 to 4
call rco_displaybeep()
call rco_wait(40)
end
call writeln out,cr"Wenn ein Bildschirmsignal stören würde, bietet sich"
call writeln out,"als stummes Signal die Betriebsanzeige-Leuchtdiode"
call writeln out,"des Amiga an."cr
call writeln out,"Beachten Sie nun die Power-LED an Ihrem Rechner!"
call writeln out,"Keine Panik, das ist kein Absturz, sondern ein"
call writeln out,"Blinksignal, das Sie mit "weiss"rco_ledflash(n,m)"norm" auslösen"
call writeln out,"können (n=Anzahl Blinks m=Blinkfrequenz)."cr
call writeln out,"Drücken Sie vorher irgendeine Taste auf der"
call writeln out,"Tastatur. "weiss"rco_waitforkey()"norm" wartet darauf."cr
call inaktiv
call beep1
taste=rco_waitforkey() /* auf Tastaturbetätigung warten */
if ende()=1 then signal abbruch
call writeln out, fett"Beachten Sie die Power-LED !"norm
call rco_wait(40)
/* LEDFlash */
do i=3 to 10
call rco_ledflash(i-1,i)
end
do i=9 to 3 by -1
call rco_ledflash(i-1,i)
end
call beep1
call writeln out,cr"Sie hatten übrigens die Taste mit dem RAW-KeyCode"
call writeln out,blau||taste norm"gedrückt. Das war die result-Variable von"
call writeln out,weiss"rco_waitforkey()"norm". Mit "weiss"rco_getrawkey()"norm" kann man"
call writeln out,"die Tastatur in Echtzeit abfragen, was wir nun"
call writeln out,"ausprobieren wollen. Klicken Sie vorher aber bitte"
call writeln out,"einmal mit der "blau"**"norm||fett"linken"norm||blau"**"norm" Maustaste "blau"**"norm||fett"außerhalb"norm||blau"**"norm
call writeln out,"des Ausgabefensters, um es zu inaktivieren"
call writeln out,"und die Ausgabe nicht zu stören!"
call beep1
call rco_waitlmb()
if ende()=1 then signal abbruch
call inaktiv
call writeln out,cr"Wenn Sie nun eine Taste auf Ihrer Rechnertastatur"
call writeln out,"drücken, wird der zur jeweiligen Taste gehörende"
call writeln out,"RAW-KeyCode angezeigt. Die Leertaste hat z.B. den"
call writeln out,"Wert 64. Die Eingabetaste hat 68. "
call writeln out,"Drücken Sie die ESC-Taste, um diesen Testteil zu"
call writeln out,"beenden!"
call writeln out,weiss"rco_waitforkey()"norm" wartet jetzt erst mal auf einen"
call writeln out,"Tastendruck."cr
call beep1
call inaktiv
esctaste=69
call rco_waitforkey()
if ende()=1 then signal abbruch
/* Tastatur RAW-Code */
do forever
taste=rco_getrawkey()
call writeln out, "(ESC beendet) aktueller Tastencode ="blau taste norm
if taste=esctaste then leave
end
call writeln out,cr"Wie bei der Tastatur, können wir auch den Status der"
call writeln out,"Maustasten auslesen, hier gibt es für linke und rechte"
call writeln out,"Taste jeweils das Resultat "blau"Pressed"norm" oder "blau"NotPressed"norm"."
call writeln out,weiss"rco_getlmb()"norm" und "weiss"rco_getrmb()"norm" sind hierfür zuständig."
call writeln out,"(Wenn Sie eine 3-Tasten-Maus haben, können Sie mit"
call writeln out,weiss"rco_getmmb()"norm" auch die mittlere Maustaste abfragen."
call writeln out,"Aus Kompatibilitätsgründen soll dies hier jedoch"
call writeln out,"nicht demonstriert werden.)"cr
call writeln out,"Der Test beginnt, wenn sie die "blau"**"norm||fett"rechte"norm||blau"**"norm" Maustaste"
call writeln out,"klicken. "weiss"rco_waitrmb()"norm" wartet darauf.Beenden Sie diesen"
call writeln out,"Testteil wieder mit der ESC-Taste! (Beim Druck auf die"
call writeln out,"rechte Maustaste wird die Ausgabe angehalten und die"
call writeln out,"Workbench-Menüleiste erscheint, das liegt am AMIGA."
call writeln out,"Lassen Sie dann die rechte Taste wieder los. Ab OS 2.04"
call writeln out,"stoppt die Ausgabe auch, wenn Sie die linke Maustaste"
call writeln out,"außerhalb des Ausgabefensters betätigen.)"
call beep1
call rco_waitrmb()
if ende()=1 then signal abbruch
do forever
taste=rco_getrawkey()
if taste=esctaste then leave
lmb=rco_getlmb() /* Status Left Mouse Button */
if lmb='Pressed' then lmb=lmb' '
rmb=rco_getrmb() /* Status Right Mouse Button */
call writeln out, "(ESC beendet) LMB:"blau lmb norm" RMB:"blau rmb norm
end
call inaktiv
call beep1
call writeln out,cr"Einen Moment mal..."cr
call rco_wait() /* warten */
call writeln out,"Mit "weiss"rco_wait(n)"norm" können wir die Abarbeitung des Skripts"
call writeln out,"n 1/50 Sekunden verzögern..."
call beep1
call rco_wait(500) /* 10 Sekunden warten */
call beep1
call writeln out,cr"So, 10 Sekunden Erholungspause (für den Amiga!)"
call writeln out,"sind vorbei!"cr
call writeln out,"Der folgende Testteil benötigt einen angeschlossenen"
call writeln out,"Joystick ! (Am Joystickport des Amiga.)"
call writeln out,"Drücken Sie ESC, wenn Sie keinen Joystick angeschlossen"
call writeln out,"haben, um diesen Teil zu überspringen. Betätigen Sie"
call writeln out,"die Leertaste (Space), um die Joystickfunktionen"
call writeln out,"auszuprobieren."cr
spacetaste=64
call inaktiv
call beep1
/* Joystickfunktionen */
do forever
taste=rco_waitforkey()
if taste=esctaste then leave
if taste=spacetaste then leave
call writeln out, "ESC oder Leertaste!"
call rco_beep(700,20)
end
call writeln out, " "
if taste=spacetaste then do
call writeln out,weiss"rco_waitfire()"norm" wartet, bis der Feuerknopf gedrückt"
call writeln out,"wird. Tun Sie es, dann geht's weiter."
call beep1
call rco_waitfire() /* auf Klick der Feuertaste warten */
call rco_wait(20)
call writeln out,cr"Mit "weiss"rco_getfire()"norm" erhalten wir den Status der Feuer-"
call writeln out,"taste, "weiss"rco_getjoy()"norm" gibt uns die Stellung des Sticks"
call writeln out,"zurück. (Diagonalstellungen werden z.Z. nicht aus-"
call writeln out,"gewertet.) Drücken Sie wieder die Feuertaste, dann"
call writeln out,"kann's losgehen. Ende wieder mit ESC."
call rco_wait(29)
call rco_waitfire()
do forever
taste=rco_getrawkey()
if taste=esctaste then leave
fire=rco_getfire()
if fire='Pressed' then fire=fire' '
call rco_getjoy() /* Status Joystickhebel holen */
call writeln out, "(ESC beendet) Fire:"blau fire norm" Stickposition:"blau result norm
end
end
else do
call writeln out,"Hä, kein Joystick ? Sie sind wohl kein Spieler ?!"
end
call writeln out,cr"Möchten Sie Ihren Amiga-Screen auf Videoband aufzeichnen,"
call writeln out,"z.B. für einen Titel? Dann gibt es zwei störende Probleme:"
call writeln out,"Erstens den Mauszeiger und zweitens die Tatsache, daß sich"
call writeln out,"eine Videoaufzeichnung eines Bildschirms im Non-Lace-Modus"
call writeln out,"nur schlecht im schnellen Bildsuchlauf betrachten läßt und"
call writeln out,"beim Kopieren evtl. Probleme auftauchen. Für eine Video-"
call writeln out,"aufzeichnung empfehle ich daher, daß Display in den Lace-"
call writeln out,"Modus zu schalten, wie es auch ein Genlock bei anliegendem"
call writeln out,"Videosignal macht, um dem Amiga ein korrektes Fernsehsignal"
call writeln out,"zu entlocken."
call writeln out,cr"Steuern Sie Ihre Aufzeichnung über ARexx, sind jetzt beide"
call writeln out,"Probleme gelöst, denn es gibt dafür die Funktionen"
call writeln out,weiss"rco_pointer(ON|OFF)"norm" und "weiss"rco_lace(ON|OFF)"norm"."
call writeln out,cr"Klicken Sie die "fett"linke"norm" Maustaste, um das einmal zu"
call writeln out,"demonstrieren!"
call beep1
call rco_waitlmb()
if ende()=1 then signal abbruch
call rco_lace(ON)
call rco_pointer(OFF)
call writeln out,cr"Schwupp, weg isser, der Mauszeiger!"
call writeln out,cr"Nun ja, es flimmert mächtig gewaltig, aber dieser Modus"
call writeln out,"ist auch nur für die Videoaufzeichnung gedacht."cr
call rco_wait()
call writeln out,"Klicken Sie mit der "fett"linken"norm" Maustaste, um in den"
call writeln out,"Arbeitsmodus zurückzukehren und den Mauszeiger"
call writeln out,"wieder erscheinen zu lassen."
call beep1
call rco_waitlmb()
if ende()=1 then signal abbruch
call rco_lace(OFF)
call rco_pointer(ON)
call inaktiv
call writeln out,cr"Dank "weiss"rco_lace(OFF)"norm" und "weiss"rco_pointer(ON)"norm" ist"
call writeln out,"jetzt alles wieder beim alten."cr
call beep1
call writeln out,"So, jetzt haben wir (fast) alle Grundfunktionen"
call writeln out,"durchprobiert. Sämtliche Funktionen, auch die"
call writeln out,"Zusatzfunktionen für FrameMachine/Prism24 sind"
call writeln out,"ausführlich in der AmigaGuide-Datei "fett"rexxcontrol.guide"norm
call writeln out,"erläutert."cr
call writeln out,"Drücken Sie die linke Maustaste, um das Skript zu"
call writeln out,"beenden und dieses Fenster zu schließen."
call beep1
call rco_waitlmb()
if sabbel=0 then do
call rco_phone("fiy8iy8l shpah6ah8ah6s mih4t deh8eh7n fuh5nktih4ow6neh3n")
call rco_phone("dae5r reh9kskoh5ntrow6l lay5brae4riy3. . .")
call rco_phone(" - . . . aw8f viy8iy8deh5rzeh4/heh3n.")
end
call writeln out, cr"Tschüß!"
call rco_beep(100,40)
call rco_wait(20)
exit
abbruch:
signal off syntax
call close out
say "Das Skript wurde abgebrochen!"
call verz(5)
exit
error:
signal off error
say "Fehler Nr." rc "aufgetreten in Zeile Nr." sigl "!"
say errortext(rc)
call verz(8)
exit
syntax:
signal off syntax
if rc=14 then do /* Lib wurde nicht gefunden */
call remlib('rexxcontrol.library')
say"ACHTUNG!"
say" "
say"Die rexxcontrol.library ist nicht verfügbar und konnte nicht"
say"geöffnet werden. Kopieren Sie sie bitte in das Verzeichnis"
say"LIBS: Ihrer Bootpartition/-diskette und starten Sie dann das"
say"Skript noch einmal!"
say" "
call verz(11)
exit
end
else do
say "Fehler Nr." rc "aufgetreten in Zeile Nr." sigl "!"
say errortext(rc)
call verz(8)
exit
end
/* Hauptfenster inaktivieren, um bei Tastendruck nicht die weitere
Ausgabe zu blockieren */
inaktiv:
call close(dummy)
call open(dummy,dummydef)
return
/* Piepser ausgeben */
beep1:
call rco_beep(1200,6)
return
/* Abbruch des Skripts bei Druck auf LMB und RMB */
ende:
call rco_getrmb()
if result="NotPressed" then return 0
call rco_getlmb()
if result="NotPressed" then return 0
return 1
/* Verzögerung (natürlich nur, wenn sich rco_delay() nicht benutzen läßt!)
Solche Loops sind Mist!
(Kann aber immer noch als schlechtes Beispiel dienen!) */
verz:
arg verzwert
do i=1 to verzwert*1000
nop
nop
nop
nop
end
return 0
/* Ende des Skripts */